home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / plain / contrib / springer / aa / aa.cmm < prev    next >
Encoding:
Text File  |  1991-02-24  |  50.6 KB  |  1,453 lines

  1. % This is AA.CMM, the plain TeX macro package
  2. % (CM version) from Springer-Verlag
  3. % for the Astronomy and Astrophysics Main Journal
  4. % Version 2.0 as of 25 Feb 1991
  5. %
  6. % Test for recursive or multiple loading of Springer macro packages
  7. \def\SpringerMacroPackageNameATest{AA}%
  8. \let\next\relax
  9. \ifx\SpringerMacroPackageNameA\undefined
  10.   \message{Loading the \SpringerMacroPackageNameATest\space
  11.            macro package from Springer-Verlag...}%
  12. \else
  13.   \ifx\SpringerMacroPackageNameA\SpringerMacroPackageNameATest
  14.     \message{\SpringerMacroPackageNameA\space macro package
  15.              from Springer-Verlag already loaded.}%
  16.     \let\next\endinput
  17.   \else
  18.     \message{DANGER: \SpringerMacroPackageNameA\space from
  19.              Springer-Verlag already loaded, will try to proceed.}%
  20.   \fi
  21. \fi
  22. \next
  23. \def\SpringerMacroPackageNameA{AA}%
  24. % now call all the sub-macros
  25. % indention of equations
  26. \newskip\mathindent      \mathindent=0pt
  27. % \titlea
  28. \newskip\tabefore \tabefore=20dd plus 10pt minus 5pt      % space above
  29. \newskip\taafter  \taafter=10dd                           % space below
  30. % \titleb
  31. \newskip\tbbeforeback    \tbbeforeback=-20dd              % corrective space to a \titlea
  32. \newskip\tbbefore        \tbbefore=17pt plus 7pt minus3pt % spaceabove
  33. \newskip\tbafter         \tbafter=8pt                     % space below
  34. % \titlec
  35. \newskip\tcbeforeback    \tcbeforeback=-3pt               % corrective space to a \titleb
  36. \advance\tcbeforeback by -10dd                            % corrective space to a \titleb
  37. \newskip\tcbefore        \tcbefore=10dd plus 5pt minus 1pt% space above
  38. \newskip\tcafter         \tcafter=6pt                     % space below
  39. % \titled
  40. \newskip\tdbeforeback    \tdbeforeback=-3pt                  % corrective space to a \titlec
  41. \advance\tdbeforeback by -10dd                               % corrective space to a \titlec
  42. \newskip\tdbefore        \tdbefore=10dd plus 4pt minus 1pt   % space above
  43. % \petit
  44. \newskip\petitsurround
  45. \petitsurround=6pt\relax
  46. % \ack
  47. \newskip\ackbefore      \ackbefore=10dd plus 5pt             % space above
  48. \newskip\ackafter       \ackafter=6pt                        % space below
  49. % indention of lists
  50. \newdimen\itemindent    \newdimen\itemitemindent
  51. \itemindent=1.5em       \itemitemindent=2\itemindent
  52. %
  53.  \font \tatt            = cmbx10 scaled \magstep3
  54.  \font \tats            = cmbx10 scaled \magstep1
  55.  \font \tamt            = cmmib10 scaled \magstep3
  56.  \font \tams            = cmmib10 scaled \magstep1
  57.  \font \tamss           = cmmib10
  58.  \font \tast            = cmsy10 scaled \magstep3
  59.  \font \tass            = cmsy10 scaled \magstep1
  60.  \font \tbtt            = cmbx10 scaled \magstep2
  61.  \font \tbmt            = cmmib10 scaled \magstep2
  62.  \font \tbst            = cmsy10 scaled \magstep2
  63. %
  64. \catcode`@=11    % use @ as a normal character
  65. \vsize=23.5truecm
  66. \hoffset=-1true cm
  67. \voffset=-1true cm
  68. \normallineskip=1dd
  69. \normallineskiplimit=0dd
  70. \newskip\ttglue%
  71. \def\ifundefin@d#1#2{%
  72. \expandafter\ifx\csname#1#2\endcsname\relax}
  73. %
  74. \def\getf@nt#1#2#3#4{%
  75. \ifundefin@d{#1}{#2}%
  76. \global\expandafter\font\csname#1#2\endcsname=#3#4%
  77. \fi\relax
  78. }
  79. \newfam\sffam
  80. \newfam\scfam
  81. \def\makesize#1#2#3#4#5#6#7{%
  82. %
  83.  \getf@nt{rm}{#1}{cmr}{#2}%
  84.  \getf@nt{rm}{#3}{cmr}{#4}%
  85.  \getf@nt{rm}{#5}{cmr}{#6}%
  86.  \getf@nt{mi}{#1}{cmmi}{#2}%
  87.  \getf@nt{mi}{#3}{cmmi}{#4}%
  88.  \getf@nt{mi}{#5}{cmmi}{#6}%
  89.  \getf@nt{sy}{#1}{cmsy}{#2}%
  90.  \getf@nt{sy}{#3}{cmsy}{#4}%
  91.  \getf@nt{sy}{#5}{cmsy}{#6}%
  92. %
  93.  \skewchar\csname mi#1\endcsname ='177
  94.  \skewchar\csname mi#3\endcsname ='177
  95.  \skewchar\csname mi#5\endcsname ='177
  96.  \skewchar\csname sy#1\endcsname ='60
  97.  \skewchar\csname sy#3\endcsname='60
  98.  \skewchar\csname sy#5\endcsname='60
  99. %
  100. \expandafter\def\csname#1size\endcsname{%
  101.  \normalbaselineskip=#7
  102.  \normalbaselines
  103.  \setbox\strutbox=\hbox{\vrule height0.75\normalbaselineskip%
  104.     depth0.25\normalbaselineskip width0pt}%
  105. %
  106.  \textfont0=\csname rm#1\endcsname
  107.  \scriptfont0=\csname rm#3\endcsname
  108.  \scriptscriptfont0=\csname rm#5\endcsname
  109.     \def\oldstyle{\fam1\csname mi#1\endcsname}%
  110. %
  111.  \textfont1=\csname mi#1\endcsname
  112.  \scriptfont1=\csname mi#3\endcsname
  113.  \scriptscriptfont1=\csname mi#5\endcsname
  114. %
  115.  \textfont2=\csname sy#1\endcsname
  116.  \scriptfont2=\csname sy#3\endcsname
  117.  \scriptscriptfont2=\csname sy#5\endcsname
  118. %
  119.  \textfont3=\tenex\scriptfont3=\tenex\scriptscriptfont3=\tenex
  120.    \def\rm{%
  121.  \fam0\csname rm#1\endcsname%
  122.    }%
  123.    \def\it{%
  124.  \getf@nt{it}{#1}{cmti}{#2}%
  125.  \textfont\itfam=\csname it#1\endcsname
  126.  \fam\itfam\csname it#1\endcsname
  127.    }%
  128.    \def\sl{%
  129.  \getf@nt{sl}{#1}{cmsl}{#2}%
  130.  \textfont\slfam=\csname sl#1\endcsname
  131.  \fam\slfam\csname sl#1\endcsname}%
  132.    \def\bf{%
  133.  \getf@nt{bf}{#1}{cmbx}{#2}%
  134.  \getf@nt{bf}{#3}{cmbx}{#4}%
  135.  \getf@nt{bf}{#5}{cmbx}{#6}%
  136.  \textfont\bffam=\csname bf#1\endcsname
  137.  \scriptfont\bffam=\csname bf#3\endcsname
  138.  \scriptscriptfont\bffam=\csname bf#5\endcsname
  139.  \fam\bffam\csname bf#1\endcsname}%
  140.    \def\tt{%
  141.  \getf@nt{tt}{#1}{cmtt}{#2}%
  142.  \textfont\ttfam=\csname tt#1\endcsname
  143.  \fam\ttfam\csname tt#1\endcsname
  144.  \ttglue=.5em plus.25em minus.15em
  145.    }%
  146.   \def\sf{%
  147. \getf@nt{sf}{#1}{cmss}{10 at #2pt}%
  148. \textfont\sffam=\csname sf#1\endcsname
  149. \fam\sffam\csname sf#1\endcsname}%
  150.    \def\sc{%
  151.  \getf@nt{sc}{#1}{cmcsc}{10 at #2pt}%
  152.  \textfont\scfam=\csname sc#1\endcsname
  153.  \fam\scfam\csname sc#1\endcsname}%
  154. \rm }}
  155. \makesize{IXf}{9}{VIf}{6}{Vf}{5}{10.00dd}
  156. \def\normalsize{\IXfsize
  157. \def\sf{%
  158.    \getf@nt{sf}{IXf}{cmss}{9}%
  159.    \getf@nt{sf}{VIf}{cmss}{10 at 6pt}%
  160.    \getf@nt{sf}{Vf}{cmss}{10 at 5pt}%
  161.    \textfont\sffam=\csname sfIXf\endcsname
  162.    \scriptfont\sffam=\csname sfVIf\endcsname
  163.    \scriptscriptfont\sffam=\csname sfVf\endcsname
  164.    \fam\sffam\csname sfIXf\endcsname}%
  165. }%
  166. \newfam\mibfam
  167. \def\mib{%
  168.    \getf@nt{mib}{IXf}{cmmib}{10 at9pt}%
  169.    \getf@nt{mib}{VIf}{cmmib}{10 at6pt}%
  170.    \getf@nt{mib}{Vf}{cmmib}{10 at5pt}%
  171.    \textfont\mibfam=\csname mibIXf\endcsname
  172.    \scriptfont\mibfam=\csname mibVIf\endcsname
  173.    \scriptscriptfont\mibfam=\csname mibVf\endcsname
  174.    \fam\mibfam\csname mibIXf\endcsname}%
  175. \makesize{Xf}{10}{VIf}{6}{Vf}{5}{10.00dd}
  176. \Xfsize
  177. \it\bf\tt\rm
  178. \def\tenrm{\rmXf}
  179. \def\fiverm{\rmVf}
  180. \def\teni{\miXf}
  181. \def\fivei{\miVf}
  182. \def\tensy{\syXf}
  183. \def\fivesy{\syVf}
  184. \def\tenbf{\bfXf}
  185. \def\fivebf{\bfVf}
  186. \def\tentt{\ttXf}
  187. \def\tensl{\slXf}
  188. \def\tenit{\itXf}
  189. \normalsize
  190. \it\bf\tt\sf\mib\rm
  191. \def\boldmath{\textfont1=\mibIXf \scriptfont1=\mibVIf
  192. \scriptscriptfont1=\mibVf}
  193. \newdimen\fullhsize
  194. \newcount\verybad \verybad=1010
  195. \let\lr=L%
  196. \fullhsize=40cc
  197. \hsize=19.5cc
  198. \def\fullline{\hbox to\fullhsize}
  199. \def\makefootline{\baselineskip=10dd \fullline{\the\footline}}
  200. \def\makeheadline{\vbox to 0pt{\vskip-22.5pt
  201.             \fullline{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip}
  202. \hfuzz=2pt
  203. \vfuzz=2pt
  204. \tolerance=1000
  205. %
  206. \abovedisplayskip=3 mm plus6pt minus 4pt
  207. \belowdisplayskip=3 mm plus6pt minus 4pt
  208. \abovedisplayshortskip=0mm plus6pt
  209. \belowdisplayshortskip=2 mm plus4pt minus 4pt
  210. \parindent=1.5em
  211. \newdimen\stdparindent\stdparindent\parindent
  212. \frenchspacing
  213. %
  214. \nopagenumbers
  215. %
  216. \predisplaypenalty=600        % Make a page break before a display harder
  217. \displaywidowpenalty=2000     % and even harder for a widow display.
  218. %
  219. \def\widowsandclubs#1{\global\verybad=#1
  220.    \global\widowpenalty=\the\verybad1      % default: 10101
  221.    \global\clubpenalty=\the\verybad2  }    % default: 10102
  222. \widowsandclubs{1010}
  223. %
  224. \def\paglay{\headline={{\normalsize\hsize=.75\fullhsize\ifnum\pageno=1
  225. \vbox{\hrule\line{\vrule\kern3pt\vbox{\kern3pt
  226. \hbox{\bf A\&A manuscript no.}
  227. \hbox{(will be inserted by hand later)}
  228. \kern3pt\hrule\kern3pt
  229. \hbox{\bf Your thesaurus codes are:}
  230. \hbox{\rightskip=0pt plus3em\advance\hsize by-7pt
  231. \vbox{\bf\noindent\ignorespaces\the\THESAURUS}}
  232. \kern3pt}\hfil\kern3pt\vrule}\hrule}
  233. \rlap{\quad\AALogo}\hfil
  234. \else\normalsize\ifodd\pageno\hfil\folio\else\folio\hfil\fi\fi}}}
  235. \makesize{VIIIf}{8}{VIf}{6}{Vf}{5}{9.00dd}
  236.       \getf@nt{sf}{VIIIf}{cmss}{8}%
  237.       \getf@nt{sf}{VIf}{cmss}{10 at 6pt}%
  238.       \getf@nt{sf}{Vf}{cmss}{10 at 5pt}%
  239.       \getf@nt{mib}{VIIIf}{cmmib}{10 at 8pt}%
  240.       \getf@nt{mib}{VIf}{cmmib}{10 at 6pt}%
  241.       \getf@nt{mib}{Vf}{cmmib}{10 at 5pt}%
  242. \VIIIfsize\it\bf\tt\rm
  243. \normalsize
  244. \def\petit{\VIIIfsize
  245.    \def\sf{%
  246.       \getf@nt{sf}{VIIIf}{cmss}{8}%
  247.       \getf@nt{sf}{VIf}{cmss}{10 at 6pt}%
  248.       \getf@nt{sf}{Vf}{cmss}{10 at 5pt}%
  249.       \textfont\sffam=\csname sfVIIIf\endcsname
  250.       \scriptfont\sffam=\csname sfVIf\endcsname
  251.       \scriptscriptfont\sffam=\csname sfVf\endcsname
  252.       \fam\sffam\csname sfVIIIf\endcsname
  253. }%
  254. \def\mib{%
  255.    \getf@nt{mib}{VIIIf}{cmmib}{10 at 8pt}%
  256.    \getf@nt{mib}{VIf}{cmmib}{10 at 6pt}%
  257.    \getf@nt{mib}{Vf}{cmmib}{10 at 5pt}%
  258.    \textfont\mibfam=\csname mibVIIIf\endcsname
  259.    \scriptfont\mibfam=\csname mibVIf\endcsname
  260.    \scriptscriptfont\mibfam=\csname mibVf\endcsname
  261.    \fam\mibfam\csname mibIXf\endcsname}%
  262. \def\boldmath{\textfont1=\mibVIIIf\scriptfont1=\mibVIf
  263. \scriptscriptfont1=\mibVf}%
  264. \let\bfIXf=\bfVIIIf
  265.  \if Y\REFEREE \normalbaselineskip=2\normalbaselineskip
  266.  \normallineskip=2\normallineskip\fi
  267.  \setbox\strutbox=\hbox{\vrule height7pt depth2pt width0pt}%
  268.  \normalbaselines\rm}%
  269. %
  270. \def\begpet{\vskip\petitsurround
  271. \bgroup\petit}%  Beginn eines Paragraphen in petit
  272. \def\endpet{\vskip\petitsurround
  273. \egroup}%  Ende eines Paragraphen in petit
  274. %
  275.  \let  \kleinhalbcurs   = \mibVIIIf
  276.  \let  \tatss           = \bfXf
  277.  \let  \tasss           = \syXf
  278.  \let  \tbts            = \bfXf
  279.  \let  \tbtss           = \bfVIIIf
  280.  \let  \tbms            = \tamss
  281.  \let  \tbmss           = \mibVIIIf
  282.  \let  \tbss            = \syXf
  283.  \let  \tbsss           = \syVIIIf
  284. %
  285. \def\newline{\hfill\break}% makes a new line in the text :)
  286. %
  287. \def\rahmen#1{\vbox{\hrule\line{\vrule\vbox to#1true
  288. cm{\vfil}\hfil\vrule}\vfil\hrule}}
  289. %
  290. \let\ts=\thinspace
  291. \def\,{\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi}
  292. %
  293. \def\unvskip{%
  294.    \ifvmode
  295.       \ifdim\lastskip=0pt
  296.       \else
  297.          \vskip-\lastskip
  298.       \fi
  299.    \fi}
  300. %
  301. \newtoks\eq\newtoks\eqn
  302. %
  303. \newdimen\mathhsize
  304. \def\calcmathhsize{\mathhsize=\hsize
  305. \advance\mathhsize by-\mathindent}
  306. \calcmathhsize
  307. %
  308. \def\eqalign#1{\null\vcenter{\openup\jot\m@th
  309.   \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil
  310.       \crcr#1\crcr}}}
  311. \def\displaylines#1{{}$\displ@y
  312. \hbox{\vbox{\halign{$\@lign\hfil\displaystyle##\hfil$\crcr
  313.     #1\crcr}}}${}}
  314. \def\eqalignno#1{{}$\displ@y
  315.   \hbox{\vbox{\halign
  316. to\mathhsize{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip
  317.     &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering
  318.     &\llap{$\@lign##$}\tabskip\z@skip\crcr
  319.     #1\crcr}}}${}}
  320. \def\leqalignno#1{{}$\displ@y
  321. \hbox{\vbox{\halign
  322. to\mathhsize{\qquad\hfil$\@lign\displaystyle{##}$\tabskip\z@skip
  323.     &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering
  324.     &\kern-\mathhsize\rlap{$\@lign##$}\tabskip\hsize\crcr
  325.     #1\crcr}}}${}}
  326. %
  327. \def\generaldisplay{%
  328. \ifeqno
  329.        \ifleqno\leftline{$\displaystyle\the\eqn\quad\the\eq$}%
  330.        \else\noindent\kern\mathindent\hbox to\mathhsize{$\displaystyle
  331.              \the\eq\hfill\the\eqn$}%
  332.        \fi
  333. \else
  334.        \kern\mathindent
  335.        \hbox to\mathhsize{$\displaystyle\the\eq$\hss}%
  336. \fi
  337. \global\eq={}\global\eqn={}}%
  338. %
  339. \newif\ifeqno\newif\ifleqno
  340. %
  341. \everydisplay{\displaysetup}
  342. \def\displaysetup#1$${\displaytest#1\eqno\eqno\displaytest}
  343. % look for equation numbers
  344. \def\displaytest#1\eqno#2\eqno#3\displaytest{%
  345. \if!#3!\ldisplaytest#1\leqno\leqno\ldisplaytest
  346. \else\eqnotrue\leqnofalse\eqn={#2}\eq={#1}\fi
  347. \generaldisplay$$}
  348. \def\ldisplaytest#1\leqno#2\leqno#3\ldisplaytest{\eq={#1}%
  349. \if!#3!\eqnofalse\else\eqnotrue\leqnotrue\eqn={#2}\fi}
  350. %
  351. \newcount\eqnum\eqnum=0% register
  352. %
  353. \def\autnum{\global\advance\eqnum by 1\relax{\rm(\the\eqnum)}}
  354. %
  355. \newdimen\lindent
  356. \lindent=\stdparindent
  357. \def\litem{\par\noindent
  358.                \hangindent=\lindent\ltextindent}
  359. \def\litemitem{\par\noindent\hbox to\lindent{\hfil}%
  360.                \hangindent=2\lindent\ltextindent}
  361. \def\ltextindent#1{\hbox to\lindent{#1\hss}\ignorespaces}
  362. %
  363. \def\set@item@mark#1{\llap{#1\enspace}\ignorespaces}
  364. %
  365. \ifx\undefined\mathhsize
  366.    \def\item{\par\noindent
  367.    \hangindent\itemindent\hangafter=0
  368.    \set@item@mark}
  369. %
  370.    \def\itemitem{\par\noindent\advance\mathhsize by-\itemitemindent
  371.    \hangindent\itemitemindent\hangafter=0
  372.    \set@item@mark}
  373. \else
  374.    \def\item{\par\noindent\advance\mathhsize by-\itemindent
  375.    \hangindent\itemindent\hangafter=0
  376.    \everypar={\global\mathhsize=\hsize
  377.    \global\advance\mathhsize by-\mathindent
  378.    \global\everypar={}}\set@item@mark}
  379.    %
  380.    \def\itemitem{\par\noindent\advance\mathhsize by-\itemitemindent
  381.    \hangindent\itemitemindent\hangafter=0
  382.    \everypar={\global\mathhsize=\hsize
  383.    \global\advance\mathhsize by-\mathindent
  384.    \global\everypar={}}\set@item@mark}
  385. \fi
  386. %
  387. \newcount\the@end \global\the@end=0
  388. \newbox\springer@macro \setbox\springer@macro=\vbox{}
  389. \def\typeset{\setbox\springer@macro=\vbox{\begpet\noindent
  390.    This article was processed by the author using
  391.    Sprin\-ger-Ver\-lag \TeX{} A\&A macro package 1991.\par
  392.    \egroup}\global\the@end=1}
  393. \outer\def\bye{\bigskip\typeset
  394. \sterne=1\ifx\speciali\undefined
  395. \else
  396.   \loop\smallskip\noindent special character No\number\sterne:
  397.     \csname special\romannumeral\sterne\endcsname
  398.     \advance\sterne by 1\relax
  399.     \ifnum\sterne<11\relax
  400.   \repeat
  401. \fi
  402. \if R\lr\null\fi\vfill\supereject\end}
  403. %
  404. \def\AALogo{\setbox254=\hbox{ ASTROPHYSICS }%
  405. \vbox{\baselineskip=10dd\hrule\hbox{\vrule\vbox{\kern3pt
  406. \hbox to\wd254{\hfil ASTRONOMY\hfil}
  407. \hbox to\wd254{\hfil AND\hfil}\copy254
  408. \hbox to\wd254{\hfil\number\day.\number\month.\number\year\hfil}
  409. \kern3pt}\vrule}\hrule}}
  410. %
  411. \def\figure#1#2{\medskip\noindent{\petit{\bf Fig.\ts#1.\
  412. }\ignorespaces#2\par}}
  413. %
  414. \def\tabcap#1#2{\smallskip\noindent{\bf Table\ts\ignorespaces
  415. #1\unskip.\ }\ignorespaces #2\vskip3mm}
  416. %
  417. \expandafter \newcount \csname c@Tl\endcsname
  418.     \csname c@Tl\endcsname=0
  419. \expandafter \newcount \csname c@Tm\endcsname
  420.     \csname c@Tm\endcsname=0
  421. \expandafter \newcount \csname c@Tn\endcsname
  422.     \csname c@Tn\endcsname=0
  423. \expandafter \newcount \csname c@To\endcsname
  424.     \csname c@To\endcsname=0
  425. \expandafter \newcount \csname c@Tp\endcsname
  426.     \csname c@Tp\endcsname=0
  427. \expandafter \newcount \csname c@fn\endcsname
  428.     \csname c@fn\endcsname=0
  429. \def \stepc#1    {\global
  430.     \expandafter
  431.     \advance
  432.     \csname c@#1\endcsname by 1}
  433. \def \resetcount#1    {\global
  434.     \csname c@#1\endcsname=0}
  435. \def\@nameuse#1{\csname #1\endcsname}
  436. \def\arabic#1{\@arabic{\@nameuse{c@#1}}}
  437. \def\@arabic#1{\ifnum #1>0 \number #1\fi}
  438. %
  439.  \def \aTa  { \goodbreak
  440.      \bgroup
  441.      \par
  442.  \textfont0=\tatt \scriptfont0=\tats \scriptscriptfont0=\tatss
  443.  \textfont1=\tamt \scriptfont1=\tams \scriptscriptfont1=\tamss
  444.  \textfont2=\tast \scriptfont2=\tass \scriptscriptfont2=\tasss
  445.      \baselineskip=17dd\lineskiplimit=0pt\lineskip=0pt
  446.      \rightskip=0pt plus4cm
  447.      \pretolerance=10000
  448.      \noindent
  449.      \tatt}
  450. %
  451.  \def \eTa{\vskip10pt\egroup
  452.      \noindent
  453.      \ignorespaces}
  454. %
  455.  \def \aTb{\goodbreak
  456.      \bgroup
  457.      \par
  458.  \textfont0=\tbtt \scriptfont0=\tbts \scriptscriptfont0=\tbtss
  459.  \textfont1=\tbmt \scriptfont1=\tbms \scriptscriptfont1=\tbmss
  460.  \textfont2=\tbst \scriptfont2=\tbss \scriptscriptfont2=\tbsss
  461.      \baselineskip=13dd\lineskip=0pt\lineskiplimit=0pt
  462.      \rightskip=0pt plus4cm
  463.      \pretolerance=10000
  464.      \noindent
  465.      \tbtt}
  466. %
  467.  \def \eTb{\vskip10pt
  468.      \egroup
  469.      \noindent
  470.      \ignorespaces}
  471. %
  472. \newcount\section@penalty  \section@penalty=0
  473. \newcount\subsection@penalty  \subsection@penalty=0
  474. \newcount\subsubsection@penalty  \subsubsection@penalty=0
  475. %
  476. \def\titlea#1{\par\stepc{Tl}
  477.     \resetcount{Tm}
  478.     \bgroup
  479.        \normalsize
  480.        \bf \rightskip 0pt plus4em
  481.        \pretolerance=20000
  482.        \boldmath
  483.        \setbox0=\vbox{\vskip\tabefore
  484.           \noindent
  485.           \arabic{Tl}.\
  486.           \ignorespaces#1
  487.           \vskip\taafter}
  488.        \dimen0=\ht0\advance\dimen0 by\dp0
  489.        \advance\dimen0 by 2\baselineskip
  490.        \advance\dimen0 by\pagetotal
  491.        \ifdim\dimen0>\pagegoal
  492.           \ifdim\pagetotal>\pagegoal
  493.           \else\eject\fi\fi
  494.        \vskip\tabefore
  495.        \penalty\section@penalty \global\section@penalty=-200
  496.        \global\subsection@penalty=10007
  497.        \noindent
  498.        \arabic{Tl}.\
  499.        \ignorespaces#1
  500.        \vskip\taafter
  501.     \egroup
  502.     \nobreak
  503.     \parindent=0pt
  504.     \let\lasttitle=A%
  505. \everypar={\parindent=\stdparindent
  506.     \penalty\z@\let\lasttitle=N\everypar={}}%
  507.     \ignorespaces}
  508. %
  509. \def\titleb#1{\par\stepc{Tm}
  510.     \resetcount{Tn}
  511.     \if N\lasttitle\else\vskip\tbbeforeback\fi
  512.     \bgroup
  513.        \normalsize
  514.        \raggedright
  515.        \pretolerance=10000
  516.        \it
  517.        \setbox0=\vbox{\vskip\tbbefore
  518.           \normalsize
  519.           \raggedright
  520.           \pretolerance=10000
  521.           \noindent \it \arabic{Tl}.\arabic{Tm}.\ \ignorespaces#1
  522.           \vskip\tbafter}
  523.        \dimen0=\ht0\advance\dimen0 by\dp0\advance\dimen0 by 2\baselineskip
  524.        \advance\dimen0 by\pagetotal
  525.        \ifdim\dimen0>\pagegoal
  526.           \ifdim\pagetotal>\pagegoal
  527.           \else \if N\lasttitle\eject\fi \fi\fi
  528.        \vskip\tbbefore
  529.        \if N\lasttitle \penalty\subsection@penalty \fi
  530.        \global\subsection@penalty=-100
  531.        \global\subsubsection@penalty=10007
  532.        \noindent \arabic{Tl}.\arabic{Tm}.\ \ignorespaces#1
  533.        \vskip\tbafter
  534.     \egroup
  535.     \nobreak
  536.     \let\lasttitle=B%
  537.     \parindent=0pt
  538.     \everypar={\parindent=\stdparindent
  539.        \penalty\z@\let\lasttitle=N\everypar={}}%
  540.        \ignorespaces}
  541. %
  542. \def\titlec#1{\par\stepc{Tn}
  543.     \resetcount{To}
  544.     \if N\lasttitle\else\vskip\tcbeforeback\fi
  545.     \bgroup
  546.        \normalsize
  547.        \raggedright
  548.        \pretolerance=10000
  549.        \setbox0=\vbox{\vskip\tcbefore
  550.           \noindent
  551.           \arabic{Tl}.\arabic{Tm}.\arabic{Tn}.\
  552.           \ignorespaces#1\vskip\tcafter}
  553.        \dimen0=\ht0\advance\dimen0 by\dp0\advance\dimen0 by 2\baselineskip
  554.        \advance\dimen0 by\pagetotal
  555.        \ifdim\dimen0>\pagegoal
  556.            \ifdim\pagetotal>\pagegoal
  557.            \else \if N\lasttitle\eject\fi \fi\fi
  558.        \vskip\tcbefore
  559.        \if N\lasttitle \penalty\subsubsection@penalty \fi
  560.        \global\subsubsection@penalty=-50
  561.        \noindent
  562.        \arabic{Tl}.\arabic{Tm}.\arabic{Tn}.\
  563.        \ignorespaces#1\vskip\tcafter
  564.     \egroup
  565.     \nobreak
  566.     \let\lasttitle=C%
  567.     \parindent=0pt
  568.     \everypar={\parindent=\stdparindent
  569.        \penalty\z@\let\lasttitle=N\everypar={}}%
  570.        \ignorespaces}
  571. %
  572. \def\titled#1{\par\stepc{To}
  573.     \resetcount{Tp}
  574.     \if N\lasttitle\else\vskip\tdbeforeback\fi
  575.     \vskip\tdbefore
  576.     \bgroup
  577.        \normalsize
  578.        \if N\lasttitle \penalty-50 \fi
  579.        \it \noindent \ignorespaces#1\unskip\
  580.     \egroup\ignorespaces}
  581. %
  582. \def\begref#1{\par
  583.    \unvskip
  584.    \goodbreak\vskip\tabefore
  585.    {\noindent\bf\ignorespaces#1%
  586.    \par\vskip\taafter}\nobreak\let\INS=N}
  587. \def\ref{\if N\INS\let\INS=Y\else\goodbreak\fi
  588.    \hangindent\stdparindent\hangafter=1\noindent\ignorespaces}
  589. \def\endref{\goodbreak}% Ende der Referenzen
  590. %
  591. \def\acknow#1{\par
  592.    \unvskip
  593.    \vskip\tcbefore
  594.    \noindent{\it Acknowledgements\/}. %
  595.    \ignorespaces#1\par
  596.    \vskip\tcafter}
  597. %
  598. \def\appendix#1{\vskip\tabefore
  599.     \vbox{\noindent{\bf Appendix #1}\vskip\taafter}%
  600.     \global\eqnum=0\relax
  601.     \nobreak\noindent\ignorespaces}
  602. %
  603. \let\REFEREE=N
  604. \newbox\refereebox
  605. \setbox\refereebox=\vbox
  606. to0pt{\vskip0.5cm\fullline{\hrulefill\tentt\lower0.5ex
  607. \hbox{\kern5pt referee's copy\kern5pt}\hrulefill}\vss}%
  608. \def\refereelayout{\let\REFEREE=M\footline={\copy\refereebox}
  609.     \message{|A referee's copy will be produced}\par
  610.     \if N\lr\else\if R\lr \onecolumn \fi \let\lr=N \topskip=10pt\fi}
  611. %
  612. \def\sun{\hbox{$\odot$}}
  613. \def\la{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  614. $\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.5pt}\sim\cr}}}
  615. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr
  616. \noalign{\vskip1.0pt}\sim\cr}}}
  617. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr
  618. \noalign{\vskip0.5pt}\sim\cr}}}
  619. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil
  620. \cr<\cr\noalign{\vskip0.5pt}\sim\cr}}}}}
  621. \def\ga{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  622. $\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.5pt}\sim\cr}}}
  623. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr
  624. \noalign{\vskip1.0pt}\sim\cr}}}
  625. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr
  626. \noalign{\vskip0.5pt}\sim\cr}}}
  627. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil
  628. \cr>\cr\noalign{\vskip0.5pt}\sim\cr}}}}}
  629. \def\sq{\hbox{\rlap{$\sqcap$}$\sqcup$}}
  630. \def\degr{\hbox{$^\circ$}}
  631. \def\arcmin{\hbox{$^\prime$}}
  632. \def\arcsec{\hbox{$^{\prime\prime}$}}
  633. \def\utw{\smash{\rlap{\lower5pt\hbox{$\sim$}}}}
  634. \def\udtw{\smash{\rlap{\lower6pt\hbox{$\approx$}}}}
  635. \def\fd{\hbox{$.\!\!^{\rm d}$}}
  636. \def\fh{\hbox{$.\!\!^{\rm h}$}}
  637. \def\fm{\hbox{$.\!\!^{\rm m}$}}
  638. \def\fs{\hbox{$.\!\!^{\rm s}$}}
  639. \def\fdg{\hbox{$.\!\!^\circ$}}
  640. \def\farcm{\hbox{$.\mkern-4mu^\prime$}}
  641. \def\farcs{\hbox{$.\!\!^{\prime\prime}$}}
  642. \def\fp{\hbox{$.\!\!^{\scriptscriptstyle\rm p}$}}
  643. \def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip
  644. \halign{\hfil$\displaystyle##$\hfil\cr\gets\cr\to\cr}}}
  645. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
  646. \gets\cr\to\cr}}}
  647. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  648. \gets\cr\to\cr}}}
  649. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  650. \gets\cr\to\cr}}}}}
  651. \def\cor{\mathrel{\mathchoice {\hbox{$\widehat=$}}{\hbox{$\widehat=$}}
  652. {\hbox{$\scriptstyle\hat=$}}
  653. {\hbox{$\scriptscriptstyle\hat=$}}}}
  654. \def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  655. $\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.5pt}=\cr}}}
  656. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr
  657. \noalign{\vskip1pt}=\cr}}}
  658. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr
  659. \noalign{\vskip0.5pt}=\cr}}}
  660. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  661. <\cr\noalign{\vskip0.5pt}=\cr}}}}}
  662. \def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  663. $\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.5pt}=\cr}}}
  664. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr
  665. \noalign{\vskip1pt}=\cr}}}
  666. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr
  667. \noalign{\vskip0.5pt}=\cr}}}
  668. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  669. >\cr\noalign{\vskip0.5pt}=\cr}}}}}
  670. \def\sol{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  671. $\displaystyle##$\hfil\cr\sim\cr\noalign{\vskip-0.2mm}<\cr}}}
  672. {\vcenter{\offinterlineskip
  673. \halign{\hfil$\textstyle##$\hfil\cr\sim\cr<\cr}}}
  674. {\vcenter{\offinterlineskip
  675. \halign{\hfil$\scriptstyle##$\hfil\cr\sim\cr<\cr}}}
  676. {\vcenter{\offinterlineskip
  677. \halign{\hfil$\scriptscriptstyle##$\hfil\cr\sim\cr<\cr}}}}}
  678. \def\sog{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  679. $\displaystyle##$\hfil\cr\sim\cr\noalign{\vskip-0.2mm}>\cr}}}
  680. {\vcenter{\offinterlineskip
  681. \halign{\hfil$\textstyle##$\hfil\cr\sim\cr>\cr}}}
  682. {\vcenter{\offinterlineskip
  683. \halign{\hfil$\scriptstyle##$\hfil\cr\sim\cr>\cr}}}
  684. {\vcenter{\offinterlineskip
  685. \halign{\hfil$\scriptscriptstyle##$\hfil\cr\sim\cr>\cr}}}}}
  686. \def\lse{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  687. $\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.5pt}\simeq\cr}}}
  688. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr
  689. \noalign{\vskip1pt}\simeq\cr}}}
  690. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr
  691. \noalign{\vskip0.5pt}\simeq\cr}}}
  692. {\vcenter{\offinterlineskip
  693. \halign{\hfil$\scriptscriptstyle##$\hfil\cr<\cr
  694. \noalign{\vskip0.5pt}\simeq\cr}}}}}
  695. \def\gse{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  696. $\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.5pt}\simeq\cr}}}
  697. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr
  698. \noalign{\vskip1.0pt}\simeq\cr}}}
  699. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr
  700. \noalign{\vskip0.5pt}\simeq\cr}}}
  701. {\vcenter{\offinterlineskip
  702. \halign{\hfil$\scriptscriptstyle##$\hfil\cr>\cr
  703. \noalign{\vskip0.5pt}\simeq\cr}}}}}
  704. \def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  705. $\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1.5pt}<\cr}}}
  706. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
  707. >\cr\noalign{\vskip-1.5pt}<\cr}}}
  708. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  709. >\cr\noalign{\vskip-1pt}<\cr}}}
  710. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  711. >\cr\noalign{\vskip-0.5pt}<\cr}}}}}
  712. \def\leogr{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  713. $\displaystyle##$\hfil\cr<\cr\noalign{\vskip-1.5pt}>\cr}}}
  714. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
  715. <\cr\noalign{\vskip-1.5pt}>\cr}}}
  716. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  717. <\cr\noalign{\vskip-1pt}>\cr}}}
  718. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  719. <\cr\noalign{\vskip-0.5pt}>\cr}}}}}
  720. \def\loa{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  721. $\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.5pt}\approx\cr}}}
  722. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr
  723. \noalign{\vskip1.0pt}\approx\cr}}}
  724. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr
  725. \noalign{\vskip0.5pt}\approx\cr}}}
  726. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  727. <\cr\noalign{\vskip0.5pt}\approx\cr}}}}}
  728. \def\goa{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  729. $\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.5pt}\approx\cr}}}
  730. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr
  731. \noalign{\vskip1.0pt}\approx\cr}}}
  732. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr
  733. \noalign{\vskip0.5pt}\approx\cr}}}
  734. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  735. >\cr\noalign{\vskip0.5pt}\approx\cr}}}}}
  736. \def\bbbr{{\rm I\!R}} %reelle Zahlen
  737. \def\bbbn{{\rm I\!N}} %natuerliche Zahlen
  738. \def\bbbm{{\rm I\!M}}
  739. \def\bbbh{{\rm I\!H}}
  740. \def\bbbf{{\rm I\!F}}
  741. \def\bbbk{{\rm I\!K}}
  742. \def\bbbp{{\rm I\!P}}
  743. \def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l}
  744. {\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}}
  745. \def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox
  746. to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
  747. {\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox
  748. to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
  749. {\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox
  750. to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
  751. {\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox
  752. to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}}
  753. \def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm Q$}\hbox{\raise
  754. 0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
  755. {\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise
  756. 0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
  757. {\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise
  758. 0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}
  759. {\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise
  760. 0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}}
  761. \def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm
  762. T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
  763. {\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox
  764. to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
  765. {\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox
  766. to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
  767. {\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox
  768. to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}}
  769. \def\bbbs{{\mathchoice
  770. {\setbox0=\hbox{$\displaystyle     \rm S$}\hbox{\raise0.5\ht0\hbox
  771. to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
  772. to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
  773. {\setbox0=\hbox{$\textstyle        \rm S$}\hbox{\raise0.5\ht0\hbox
  774. to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
  775. to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
  776. {\setbox0=\hbox{$\scriptstyle      \rm S$}\hbox{\raise0.5\ht0\hbox
  777. to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox
  778. to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}}
  779. {\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox
  780. to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox
  781. to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}
  782. \def\bbbz{{\mathchoice {\hbox{$\sf\textstyle Z\kern-0.4em Z$}}
  783. {\hbox{$\sf\textstyle Z\kern-0.4em Z$}}
  784. {\hbox{$\sf\scriptstyle Z\kern-0.3em Z$}}
  785. {\hbox{$\sf\scriptscriptstyle Z\kern-0.2em Z$}}}}
  786. \def\diameter{{\ifmmode\oslash\else$\oslash$\fi}}
  787. \def\Re{{\rm Re}}
  788. \def\Im{{\rm Im}}
  789. \def\diff{{\rm d}}
  790. \def\eul{{\rm e}}
  791. \def\imag{{\rm i}}
  792. %
  793. \def\vec#1{{\boldmath
  794. \textfont0=\bfIXf\scriptfont0=\bfVIf\scriptscriptfont0=\bfVf
  795. \ifmmode
  796. \mathchoice{\hbox{$\displaystyle#1$}}{\hbox{$\textstyle#1$}}
  797. {\hbox{$\scriptstyle#1$}}{\hbox{$\scriptscriptstyle#1$}}\else
  798. $#1$\fi}}
  799. %
  800. \def\tens#1{\ifmmode
  801. \mathchoice{\hbox{$\displaystyle\sf#1$}}{\hbox{$\textstyle\sf#1$}}
  802. {\hbox{$\scriptstyle\sf#1$}}{\hbox{$\scriptscriptstyle\sf#1$}}\else
  803. $\sf#1$\fi}
  804. %
  805. \newcount\sterne \sterne=0
  806. \newdimen\fullhead
  807. {\catcode`@=11    % use @ as a normal character
  808. \def\newtoks{\alloc@5\toks\toksdef\@cclvi}
  809. \outer\gdef\makenewtoks#1{\newtoks#1#1={ ????? }}}
  810. \makenewtoks\DATE
  811. \makenewtoks\MAINTITLE
  812. \makenewtoks\SUBTITLE
  813. \makenewtoks\AUTHOR
  814. \makenewtoks\INSTITUTE
  815. \makenewtoks\ABSTRACT
  816. \makenewtoks\KEYWORDS
  817. \makenewtoks\THESAURUS
  818. \makenewtoks\OFFPRINTS
  819. \newlinechar=`\| %
  820. \let\INS=N%
  821. {\catcode`\@=\active
  822. \gdef@#1{\if N\INS $^{#1}$\else\if
  823. E\INS\hangindent0.5\stdparindent\hangafter=1%
  824. \noindent\hbox to0.5\stdparindent{$^{#1}$\hfil}\let\INS=Y\ignorespaces
  825. \else\par\hangindent0.5\stdparindent\hangafter=1
  826. \noindent\hbox to0.5\stdparindent{$^{#1}$\hfil}\ignorespaces\fi\fi}%
  827. }%
  828. \def\mehrsterne{\global\advance\sterne by1\relax}%
  829. %
  830. \def\footnoterule{\kern-3pt\hrule width 2true cm\kern2.6pt}% Trennlinie
  831. %
  832. \def\makeOFFPRINTS#1{\bgroup\normalsize
  833.        \hsize=19.5cc
  834.        \baselineskip=10dd\lineskiplimit=0pt\lineskip=0pt
  835.        \def\textindent##1{\noindent{\it Send offprint
  836.           requests to\/}: }\relax
  837.        \vfootnote{nix}{\ignorespaces#1}\egroup}
  838. %
  839. \def\makesterne{\count254=0\loop\ifnum\count254<\sterne
  840. \advance\count254 by1\star\repeat}
  841. \def\FOOTNOTE#1{\bgroup
  842.        \ifhmode\unskip\fi
  843.        \mehrsterne$^{\makesterne}$\relax
  844.        \normalsize
  845.        \hsize=19.5cc
  846.        \baselineskip=10dd\lineskiplimit=0pt\lineskip=0pt
  847.        \def\textindent##1{\noindent\hbox
  848.        to\stdparindent{##1\hss}}\relax
  849.        \vfootnote{$^{\makesterne}$}{\ignorespaces#1}\egroup}
  850. %
  851. \def\PRESADD#1{\FOOTNOTE{Present address: \ignorespaces#1}}
  852. %
  853. \def\fonote#1{\ifhmode\unskip\fi
  854.        \mehrsterne$^{\the\sterne}$\bgroup
  855.        \normalsize
  856.        \hsize=19.5cc
  857.        \def\textindent##1{\noindent\hbox
  858.        to\stdparindent{##1\hss}}\relax
  859.        \vfootnote{$^{\the\sterne}$}{\ignorespaces#1}\egroup}
  860. %
  861. \def\missmsg#1{\message{|Missing #1 }}
  862. %
  863. \def\tstmiss#1#2#3#4#5{%
  864. \edef\test{\the #1}%
  865. \ifx\test\missing%
  866.   #2\relax%  message
  867.   #3%   action if missing
  868. \else
  869.   \ifx\test\missingi%
  870.     #2\relax%  message
  871.     #3%   action if missing
  872.   \else #4%  action if existing
  873.   \fi
  874. \fi
  875. #5%   action at any rate
  876. }%
  877. %
  878. \def\maketitle{\paglay%
  879. \def\missing{ ????? }%
  880. \def\missingi{ }%
  881. %
  882. {\parskip=0pt\relax
  883. \setbox0=\vbox{\hsize=\fullhsize\null\vskip2truecm
  884. %
  885. \tstmiss%
  886.   {\MAINTITLE}%
  887.   {}%
  888.   {\global\MAINTITLE={MAINTITLE should be given}}%
  889.   {}%
  890.   {%   write MAINTITLE:
  891.    \aTa\ignorespaces\the\MAINTITLE\eTa}%
  892. %
  893. \tstmiss%
  894.   {\SUBTITLE}%
  895.   {}%
  896.   {}%
  897.   {%   write SUBTITLE:
  898.    \aTb\ignorespaces\the\SUBTITLE\eTb}%
  899.   {}%
  900. %
  901. \tstmiss%
  902.   {\AUTHOR}%
  903.   {}%
  904.   {\AUTHOR={Name(s) and initial(s) of author(s) should be given}}
  905.   {}%
  906.   {%   write AUTHOR:
  907. \noindent{\bf\ignorespaces\the\AUTHOR\vskip4pt}}%
  908. %
  909. \tstmiss%
  910.   {\INSTITUTE}%
  911.   {}%
  912.   {\INSTITUTE={Address(es) of author(s) should be given.}}%
  913.   {}%
  914.   {%   write INSTITUTE:
  915.    \let\INS=E
  916. \noindent\ignorespaces\the\INSTITUTE\vskip10pt}%
  917. %
  918. \tstmiss%
  919.   {\DATE}%
  920.   {}%
  921.   {\DATE={$[$the date of receipt and acceptance should be inserted
  922. later$]$}}%
  923.   {}%
  924.   {%   write DATE:
  925. {\noindent\ignorespaces\the\DATE\vskip21pt}\bf A}%
  926. }%
  927. %
  928. \global\fullhead=\ht0\global\advance\fullhead by\dp0
  929. \global\advance\fullhead by10pt\global\sterne=0
  930. %
  931. {\hsize=19.5cc\null\vskip2truecm
  932. \tstmiss%
  933.   {\OFFPRINTS}%
  934.   {}%
  935.   {}%
  936.   {\makeOFFPRINTS{\the\OFFPRINTS}}%
  937.   {}%
  938. %
  939. \hsize=\fullhsize
  940. %
  941. \tstmiss%
  942.   {\MAINTITLE}%
  943.   {\missmsg{MAINTITLE}}%
  944.   {\global\MAINTITLE={MAINTITLE should be given}}%
  945.   {}%
  946.   {%   write MAINTITLE:
  947.    \aTa\ignorespaces\the\MAINTITLE\eTa}%
  948. %
  949. \tstmiss%
  950.   {\SUBTITLE}%
  951.   {}%
  952.   {}%
  953.   {%   write SUBTITLE:
  954.    \aTb\ignorespaces\the\SUBTITLE\eTb}%
  955.   {}%
  956. %
  957. \tstmiss%
  958.   {\AUTHOR}%
  959.   {\missmsg{name(s) and initial(s) of author(s)}}%
  960.   {\AUTHOR={Name(s) and initial(s) of author(s) should be given}}
  961.   {}%
  962.   {%   write AUTHOR:
  963. \noindent{\bf\ignorespaces\the\AUTHOR\vskip4pt}}%
  964. %
  965. \tstmiss%
  966.   {\INSTITUTE}%
  967.   {\missmsg{address(es) of author(s)}}%
  968.   {\INSTITUTE={Address(es) of author(s) should be given.}}%
  969.   {}%
  970.   {%   write INSTITUTE:
  971.    \let\INS=E
  972. \noindent\ignorespaces\the\INSTITUTE\vskip10pt}%
  973. %
  974. \catcode`\@=12
  975. %
  976. \tstmiss%
  977.   {\DATE}%
  978.   {\message{|The date of receipt and acceptance should be inserted
  979. later.}}%
  980.   {\DATE={$[$the date of receipt and acceptance should be inserted
  981. later$]$}}%
  982.   {}%
  983.   {%   write DATE:
  984. {\noindent\ignorespaces\the\DATE\vskip21pt}}%
  985. }%
  986. %
  987. \tstmiss%
  988.   {\THESAURUS}%
  989.   {\message{|Thesaurus codes are not given.}}%
  990.   {\global\THESAURUS={missing; you have not inserted them}}%
  991.   {}%
  992.   {}%
  993. %
  994. \if M\REFEREE\let\REFEREE=Y
  995. \normalbaselineskip=2\normalbaselineskip
  996. \normallineskip=2\normallineskip\normalbaselines\fi
  997. %
  998. \tstmiss%
  999.   {\ABSTRACT}%
  1000.   {\missmsg{ABSTRACT}}%
  1001.   {\ABSTRACT={Not yet given.}}%
  1002.   {}%
  1003.   {\noindent{\bf Abstract. }\ignorespaces\the\ABSTRACT\vskip0.5true cm}%
  1004. %
  1005. \def\strich{\par
  1006. \vbox to0pt{\hrule width\hsize\vss}\vskip-1.2\baselineskip
  1007. \vskip0pt plus3\baselineskip\relax}%
  1008. %
  1009. \tstmiss%
  1010.   {\KEYWORDS}%
  1011.   {\missmsg{KEYWORDS}}%
  1012.   {\KEYWORDS={Not yet given.}}%
  1013.   {}%
  1014.   {\noindent{\bf Key words: }\ignorespaces\the\KEYWORDS
  1015.   \strich}%
  1016. %
  1017. \global\sterne=0
  1018. }}%Ende von maketitle
  1019. %
  1020. \newdimen\@txtwd  \@txtwd=\hsize
  1021. \newdimen\@txtht  \@txtht=\vsize
  1022. \newdimen\@colht  \@colht=\vsize
  1023. \newdimen\@colwd  \@colwd=-1pt
  1024. \newdimen\@colsavwd
  1025. %
  1026. \newcount\in@t \in@t=0
  1027. \def\initlr{\if N\lr \ifdim\@colwd<0pt \global\@colwd=\hsize \fi
  1028.    \else\global\let\lr=L\ifdim\@colwd<0pt \global\@colwd=\hsize
  1029.       \global\divide\@colwd\tw@ \global\advance\@colwd by -10pt
  1030.    \fi\fi\global\advance\in@t by 1}
  1031. \def\setuplr#1#2#3{\let\lr=O \ifx#1\lr\global\let\lr=N
  1032.       \else\global\let\lr=L\fi
  1033.    \@txtht=\vsize \@colht=\vsize \@txtwd=#2 \@colwd=#3
  1034.    \if N\lr \else\multiply\@colwd\tw@ \fi
  1035.    \ifdim\@colwd>\@txtwd\if N\lr
  1036.         \errmessage{The text width is less than the column width}%
  1037.       \else
  1038.         \errmessage{The text width is less the two times the column width}%
  1039.       \fi \global\@colwd=\@txtwd
  1040.       \if N\lr\divide\@colwd by 2\fi
  1041.    \else \global\@colwd=#3 \fi \initlr \@colsavwd=#3
  1042.    \global\@insmx=\@txtht
  1043.    \global\hsize=\@colwd}
  1044. %
  1045. \def\twocolumns{\@fillpage\eject\global\let\lr=L \@makecolht
  1046.    \global\@colwd=\@colsavwd \global\hsize=\@colwd}
  1047. \def\onecolumn{\@fillpage\eject\global\let\lr=N \@makecolht
  1048.    \global\@colwd=\@txtwd \global\hsize=\@colwd}
  1049. \def\newpage{\@fillpage\eject}
  1050. \def\@fillpage{\vfill\supereject\if R\lr \null\vfill\eject\fi}
  1051. \def\newcolumn{\vfill\supereject}
  1052. %
  1053. \newbox\@leftcolumn
  1054. \newbox\@rightcolumn
  1055. \newbox\@outputbox
  1056. \newbox\@tempboxa
  1057. \newbox\@keepboxa
  1058. \newbox\@keepboxb
  1059. \newbox\@bothcolumns
  1060. \newbox\@savetopins
  1061. \newbox\@savetopright
  1062. \newcount\verybad \verybad=1010
  1063. %
  1064. \def\@makecolumn{\ifnum \in@t<1\initlr\fi
  1065.    \ifnum\outputpenalty=\the\verybad1  %%% i.e. 10101 if \verybad=1010
  1066.       \if L\lr\else\advance\pageno by1\fi
  1067.       \message{Warning: There is a 'widow' line
  1068.       at the top of page \the\pageno\if R\lr (left)\fi.
  1069.       This is unacceptable.} \if L\lr\else\advance\pageno by-1\fi \fi
  1070.    \ifnum\outputpenalty=\the\verybad2
  1071.       \message{Warning: There is a 'club' line
  1072.       at the bottom of page \the\pageno\if L\lr(left)\fi.
  1073.       This is unacceptable.} \fi
  1074.    \if L\lr \ifvoid\@savetopins\else\@colht=\@txtht\fi \fi
  1075.    \if R\lr \ifvoid\@bothcolumns \ifvoid\@savetopright
  1076.        \else\@colht=\@txtht\fi\fi\fi
  1077.    \global\setbox\@outputbox
  1078.    \vbox to\@colht{\boxmaxdepth\maxdepth
  1079.    \if L\lr \ifvoid\@savetopins\else\unvbox\@savetopins\fi \fi
  1080.    \if R\lr \ifvoid\@bothcolumns \ifvoid\@savetopright\else
  1081.        \unvbox\@savetopright\fi\fi\fi
  1082.    \ifvoid\topins\else\ifnum\count\topins>0
  1083.          \ifdim\ht\topins>\@colht
  1084.             \message{|Error: Too many or too large single column
  1085.             box(es) on this page.}\fi
  1086.          \unvbox\topins
  1087.       \else
  1088.          \global\setbox\@savetopins=\vbox{\ifvoid\@savetopins\else
  1089.          \unvbox\@savetopins\penalty-500\fi \unvbox\topins} \fi\fi
  1090.    \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255
  1091.    \ifvoid\bottomins\else\unvbox\bottomins\fi
  1092.    \ifvoid\footins\else % footnote info is present
  1093.      \vskip\skip\footins
  1094.      \footnoterule
  1095.      \unvbox\footins\fi
  1096.    \ifr@ggedbottom \kern-\dimen@ \vfil \fi}%
  1097. }
  1098. %
  1099. \def\@outputpage{\@dooutput{\lr}}
  1100. \def\@colbox#1{\hbox to\@colwd{\box#1\hss}}
  1101. \def\@dooutput#1{\global\topskip=10pt
  1102.   \ifdim\ht\@bothcolumns>\@txtht
  1103.     \if #1N
  1104.        \unvbox\@outputbox
  1105.     \else
  1106.        \unvbox\@leftcolumn\unvbox\@outputbox
  1107.     \fi
  1108.     \global\setbox\@tempboxa\vbox{\hsize=\@txtwd\makeheadline
  1109.        \vsplit\@bothcolumns to\@txtht
  1110.        \makefootline\hsize=\@colwd}%
  1111.     \message{|Error: Too many double column boxes on this page.}%
  1112.     \shipout\box\@tempboxa\advancepageno
  1113.     \unvbox255 \penalty\outputpenalty
  1114.   \else
  1115.     \global\setbox\@tempboxa\vbox{\hsize=\@txtwd\makeheadline
  1116.        \ifvoid\@bothcolumns\else\unvbox\@bothcolumns\fi
  1117.        \hsize=\@colwd
  1118.        \if #1N
  1119.           \hbox to\@txtwd{\@colbox{\@outputbox}\hfil}%
  1120.        \else
  1121.           \hbox to\@txtwd{\@colbox{\@leftcolumn}\hfil\@colbox{\@outputbox}}%
  1122.        \fi
  1123.        \hsize=\@txtwd\makefootline\hsize=\@colwd}%
  1124.     \shipout\box\@tempboxa\advancepageno
  1125.   \fi
  1126.   \ifnum \special@pages>0 \s@count=100 \page@command
  1127.       \xdef\page@command{}\global\special@pages=0 \fi
  1128.   }
  1129. %
  1130. \def\balance@right@left{\dimen@=\ht\@leftcolumn
  1131.     \advance\dimen@ by\ht\@outputbox
  1132.     \advance\dimen@ by\ht\springer@macro
  1133.     \dimen2=\z@ \global\the@end=0
  1134.     \ifdim\dimen@>70pt\setbox\z@=\vbox{\unvbox\@leftcolumn
  1135.           \unvbox\@outputbox}%
  1136.        \loop
  1137.           \dimen@=\ht\z@
  1138.           \advance\dimen@ by0.5\topskip
  1139.           \advance\dimen@ by\baselineskip
  1140.           \advance\dimen@ by\ht\springer@macro
  1141.           \advance\dimen@ by\dimen2
  1142.           \divide\dimen@ by2
  1143.           \splittopskip=\topskip
  1144.           % Now split it to two parts of about the same height
  1145.           {\vbadness=10000
  1146.              \global\setbox3=\copy\z@
  1147.              \global\setbox1=\vsplit3 to \dimen@}%
  1148.           \dimen1=\ht3 \advance\dimen1 by\ht\springer@macro
  1149.        \ifdim\dimen1>\ht1 \advance\dimen2 by\baselineskip\repeat
  1150.        \dimen@=\ht1
  1151.        % Restore the column boxes and adjust
  1152.        \global\setbox\@leftcolumn
  1153.           \hbox to\@colwd{\vbox to\@colht{\vbox to\dimen@{\unvbox1}\vfil}}%
  1154.        \global\setbox\@outputbox
  1155.           \hbox to\@colwd{\vbox to\@colht{\vbox to\dimen@{\unvbox3
  1156.              \vfill\box\springer@macro}\vfil}}%
  1157.     \else
  1158.        \setbox\@leftcolumn=\vbox{unvbox\@leftcolumn\bigskip
  1159.           \box\springer@macro}%
  1160.     \fi}
  1161. %
  1162. \newinsert\bothins
  1163. \newbox\rightins
  1164. \skip\bothins=\z@skip
  1165. \count\bothins=1000
  1166. \dimen\bothins=\@txtht \advance\dimen\bothins by -\bigskipamount
  1167. \def\bothtopinsert{\par\begingroup\setbox\z@\vbox\bgroup
  1168.     \hsize=\@txtwd\parskip=0pt\par\noindent\bgroup}
  1169. \def\endbothinsert{\egroup\egroup
  1170.   \if R\lr
  1171.     \right@nsert
  1172.   \else    % L\lr or N\lr
  1173.     \dimen@=\ht\z@ \advance\dimen@ by\dp\z@ \advance\dimen@ by\pagetotal
  1174.     \advance\dimen@ by \bigskipamount \advance\dimen@ by \topskip
  1175.     \advance\dimen@ by\ht\topins \advance\dimen@ by\dp\topins
  1176.     \advance\dimen@ by\ht\bottomins \advance\dimen@ by\dp\bottomins
  1177.     \advance\dimen@ by\ht\@savetopins \advance\dimen@ by\dp\@savetopins
  1178.     \ifdim\dimen@>\@colht\right@nsert\else\left@nsert\fi
  1179.   \fi  \endgroup}
  1180. \def\right@nsert{\global\setbox\rightins\vbox{\ifvoid\rightins
  1181.     \else\unvbox\rightins\fi\penalty100
  1182.     \splittopskip=\topskip
  1183.     \splitmaxdepth\maxdimen \floatingpenalty200
  1184.     \dimen@\ht\z@ \advance\dimen@\dp\z@
  1185.     \box\z@\nobreak\bigskip}}
  1186. \def\left@nsert{\insert\bothins{\penalty100
  1187.     \splittopskip=\topskip
  1188.     \splitmaxdepth\maxdimen \floatingpenalty200
  1189.     \box\z@\nobreak\bigskip}
  1190.     \@makecolht}
  1191. \newdimen\@insht    \@insht=\z@
  1192. \newdimen\@insmx    \@insmx=\vsize
  1193. %
  1194. \def\@makecolht{\global\@colht=\@txtht \@compinsht
  1195.     \global\advance\@colht by -\@insht \global\vsize=\@colht
  1196.     \global\dimen\topins=\@colht}
  1197. \def\@compinsht{\if R\lr
  1198.        \dimen@=\ht\@bothcolumns \advance\dimen@ by\dp\@bothcolumns
  1199.        \ifvoid\@bothcolumns \advance\dimen@ by\ht\@savetopright
  1200.           \advance\dimen@ by\dp\@savetopright \fi
  1201.     \else
  1202.        \dimen@=\ht\bothins \advance\dimen@ by\dp\bothins
  1203.        \advance\dimen@ by\ht\@savetopins \advance\dimen@ by\dp\@savetopins
  1204.     \fi
  1205.     \ifdim\dimen@>\@insmx
  1206.        \global\@insht=\dimen@
  1207.     \else\global\@insht=\dimen@
  1208.     \fi}
  1209. \newinsert\bottomins
  1210. \skip\bottomins=\z@skip
  1211. \count\bottomins=1000
  1212. %
  1213. \xdef\page@command{}
  1214. \newcount\s@count
  1215. \newcount\special@pages \special@pages=0
  1216. \def\specialpage#1{\global\advance\special@pages by1
  1217.     \global\s@count=\special@pages
  1218.     \global\advance\s@count by 100
  1219.     \global\setbox\s@count
  1220.     \vbox to\@txtht{\hsize=\@txtwd\parskip=0pt
  1221.     \par\noindent\noexpand#1\vfil}%
  1222.     \def\protect{\noexpand\protect\noexpand}%
  1223.     \xdef\page@command{\page@command
  1224.          \protect\global\advance\s@count by1
  1225.          \protect\begingroup
  1226.          \protect\setbox\z@\vbox{\protect\makeheadline
  1227.                                     \protect\box\s@count
  1228.             \protect\makefootline}%
  1229.          \protect{\shipout\box\z@}%
  1230.          \protect\endgroup\protect\advancepageno}%
  1231.     \let\protect=\relax
  1232.    }
  1233. %
  1234. \def\@startins{\vskip \topskip\hrule height\z@
  1235.    \nobreak\vskip -\topskip\vskip3.7pt}
  1236. %
  1237. \let\retry=N
  1238. \output={\@makecolht \global\topskip=10pt \let\retry=N%
  1239.    \ifnum\count\topins>0 \ifdim\ht\topins>\@colht
  1240.        \global\count\topins=0 \global\let\retry=Y%
  1241.        \unvbox\@cclv \penalty\outputpenalty \fi\fi
  1242.    \if N\retry
  1243.     \if N\lr     % this is for single column output
  1244.        \@makecolumn
  1245.        \ifnum\the@end>0
  1246.           \setbox\z@=\vbox{\unvcopy\@outputbox}%
  1247.           \dimen@=\ht\z@ \advance\dimen@ by\ht\springer@macro
  1248.           \ifdim\dimen@<\@colht
  1249.              \setbox\@outputbox=\vbox to\@colht{\box\z@
  1250.              \unskip\vskip12pt plus0pt minus12pt
  1251.              \box\springer@macro\vfil}%
  1252.           \else \box\springer@macro \fi
  1253.           \global\the@end=0
  1254.        \fi
  1255.        \ifvoid\bothins\else\global\setbox\@bothcolumns\box\bothins\fi
  1256.        \@outputpage
  1257.        \ifvoid\rightins\else
  1258.        %  Hold \rightins back if there is already a \@savetopins
  1259.        \ifvoid\@savetopins\insert\bothins{\unvbox\rightins}\fi
  1260.        \fi
  1261.     \else
  1262.        \if L\lr    % this is the left of two columns
  1263.           \@makecolumn
  1264.           \global\setbox\@leftcolumn\box\@outputbox \global\let\lr=R%
  1265.           \ifnum\pageno=1
  1266.              \message{|[left\the\pageno]}%
  1267.           \else
  1268.              \message{[left\the\pageno]}\fi
  1269.           \ifvoid\bothins\else\global\setbox\@bothcolumns\box\bothins\fi
  1270.           \global\dimen\bothins=\z@
  1271.           \global\count\bothins=0
  1272.           \ifnum\pageno=1
  1273.              \global\topskip=\fullhead\fi
  1274.        \else    % the right column
  1275.           \@makecolumn
  1276.           \ifnum\the@end>0\ifnum\pageno>1\balance@right@left\fi\fi
  1277.           \@outputpage \global\let\lr=L%
  1278.           \global\dimen\bothins=\maxdimen
  1279.           \global\count\bothins=1000
  1280.           \ifvoid\rightins\else
  1281.           %  Hold \rightins back if there is already a \@savetopins
  1282.              \ifvoid\@savetopins \insert\bothins{\unvbox\rightins}\fi
  1283.           \fi
  1284.        \fi
  1285.     \fi
  1286.     \global\let\last@insert=N \put@default
  1287.     \ifnum\outputpenalty>-\@MM\else\dosupereject\fi
  1288.     \ifvoid\@savetopins\else
  1289.       \ifdim\ht\@savetopins>\@txtht
  1290.         \global\setbox\@tempboxa=\box\@savetopins
  1291.         \global\setbox\@savetopins=\vsplit\@tempboxa to\@txtht
  1292.         \global\setbox\@savetopins=\vbox{\unvbox\@savetopins}%
  1293.         \global\setbox\@savetopright=\box\@tempboxa \fi
  1294.     \fi
  1295.     \@makecolht
  1296.     \global\count\topins=1000
  1297.    \fi
  1298.    }
  1299. %
  1300. \if N\lr
  1301.    \setuplr{O}{\fullhsize}{\hsize}% O = one column
  1302. \else
  1303.    \setuplr{T}{\fullhsize}{\hsize}% T = two columns
  1304. \fi
  1305. %
  1306. \def\put@default{\global\let\insert@here=Y
  1307.    \global\let\insert@at@the@bottom=N}%
  1308. %
  1309. \def\puthere{\global\let\insert@here=Y%
  1310.     \global\let\insert@at@the@bottom=N}
  1311. %
  1312. \def\putattop{\global\let\insert@here=N%
  1313.     \global\let\insert@at@the@bottom=N}
  1314. %
  1315. \def\putatbottom{\global\let\insert@here=N%
  1316.     \global\let\insert@at@the@bottom=X}
  1317. %
  1318. \put@default
  1319. \let\last@insert=N
  1320. \def\end@skip{\smallskip}
  1321. \newdimen\min@top
  1322. \newdimen\min@here
  1323. \newdimen\min@bot
  1324. \min@top=10cm
  1325. \min@here=4cm
  1326. \min@bot=\topskip
  1327. \def\figfuzz{\vskip 0pt plus 6pt minus 3pt}  % more flexible spacing
  1328. %--------------------------------------------------------------------
  1329. \def\check@here@and@bottom#1{\relax
  1330.    %
  1331.    \ifvoid\topins\else       \global\let\insert@here=N\fi
  1332.    \if B\last@insert         \global\let\insert@here=N\fi
  1333.    \if T\last@insert         \global\let\insert@here=N\fi
  1334.    \ifdim #1<\min@bot        \global\let\insert@here=N\fi
  1335.    \ifdim\pagetotal>\@colht  \global\let\insert@here=N\fi
  1336.    \ifdim\pagetotal<\min@here\global\let\insert@here=N\fi
  1337.    %
  1338.    \if X\insert@at@the@bottom\global\let\insert@at@the@bottom=Y
  1339.      \else\if T\last@insert  \global\let\insert@at@the@bottom=N\fi
  1340.           \if H\last@insert  \global\let\insert@at@the@bottom=N\fi
  1341.           \ifvoid\topins\else\global\let\insert@at@the@bottom=N\fi\fi
  1342.    \ifdim #1<\min@bot        \global\let\insert@at@the@bottom=N\fi
  1343.    \ifdim\pagetotal>\@colht  \global\let\insert@at@the@bottom=N\fi
  1344.    \ifdim\pagetotal<\min@top \global\let\insert@at@the@bottom=N\fi
  1345.    %
  1346.    \ifvoid\bottomins\else    \global\let\insert@at@the@bottom=Y\fi
  1347.    \if Y\insert@at@the@bottom\global\let\insert@here=N\fi }
  1348. %
  1349. \def\single@column@insert#1{\relax
  1350.    \setbox\@tempboxa=\vbox{#1}%
  1351.    \dimen@=\@colht \advance\dimen@ by -\pagetotal
  1352.    \advance\dimen@ by-\ht\@tempboxa \advance\dimen0 by-\dp\@tempboxa
  1353.    \advance\dimen@ by-\ht\topins \advance\dimen0 by-\dp\topins
  1354.    \check@here@and@bottom{\dimen@}%
  1355.    \if Y\insert@here
  1356.       \par  % The insertion forces a new paragraph in this case.
  1357.       \midinsert\figfuzz\relax     %%%%%%%%%\bigskip
  1358.       \box\@tempboxa\end@skip\figfuzz\endinsert
  1359.       \global\let\last@insert=H
  1360.    \else \if Y\insert@at@the@bottom
  1361.       \begingroup\insert\bottomins\bgroup\if B\last@insert\end@skip\fi
  1362.       \floatingpenalty=20000\figfuzz\bigskip\box\@tempboxa\egroup\endgroup
  1363.       \global\let\last@insert=B
  1364.    \else
  1365.       \topinsert\box\@tempboxa\end@skip\figfuzz\endinsert
  1366.       \global\let\last@insert=T
  1367.    \fi\fi\put@default\ignorespaces}
  1368. %
  1369. \def\begfig#1cm#2\endfig{\single@column@insert{\@startins\rahmen{#1}#2}%
  1370. \ignorespaces}
  1371. \def\begfigwid#1cm#2\endfig{\relax
  1372.    \if N\lr  % Here the only difference to \begfig is the larger \hsize
  1373.       {\hsize=\fullhsize \begfig#1cm#2\endfig}%
  1374.    \else
  1375.       \setbox0=\vbox{\hsize=\fullhsize\bigskip#2\smallskip}%
  1376.       \dimen0=\ht0\advance\dimen0 by\dp0
  1377.       \advance\dimen0 by#1cm
  1378.       \advance\dimen0by7\normalbaselineskip\relax
  1379.       \ifdim\dimen0>\@txtht
  1380.          \message{|Figure plus legend too high, will try to put it on a
  1381.                   separate page. }%
  1382.          \begfigpage#1cm#2\endfig
  1383.       \else
  1384.          \bothtopinsert\line{\vbox{\hsize=\fullhsize
  1385.          \@startins\rahmen{#1}#2\smallskip}\hss}\figfuzz\endbothinsert
  1386.       \fi
  1387.    \fi}
  1388. %
  1389. \def\begfigside#1cm#2cm#3\endfig{\relax
  1390.    \if N\lr  % Here the only difference to \begfig is the larger \hsize
  1391.       {\hsize=\fullhsize \begfig#1cm#3\endfig}%
  1392.    \else
  1393.       \dimen0=#2true cm\relax
  1394.       \ifdim\dimen0<\hsize
  1395.          \message{|Your figure fits in a single column; why don't|you use
  1396.                   \string\begfig\space instead of \string\begfigside? }%
  1397.       \fi
  1398.       \dimen0=\fullhsize
  1399.       \advance\dimen0 by-#2true cm
  1400.       \advance\dimen0 by-1true cc\relax
  1401.       \bgroup
  1402.          \ifdim\dimen0<8true cc\relax
  1403.             \message{|No sufficient room for the legend;
  1404.                      using \string\begfigwid. }%
  1405.             \begfigwid #1cm#3\endfig
  1406.          \else
  1407.             \ifdim\dimen0<10true cc\relax
  1408.                \message{|Room for legend to narrow;
  1409.                         legend will be set raggedright. }%
  1410.                \rightskip=0pt plus 2cm\relax
  1411.             \fi
  1412.             \setbox0=\vbox{\def\figure##1##2{\vbox{\hsize=\dimen0\relax
  1413.                            \@startins\noindent\petit{\bf
  1414.                            Fig.\ts##1\unskip.\ }\ignorespaces##2\par}}%
  1415.                            #3\unskip}%
  1416.             \ifdim#1true cm<\ht0\relax
  1417.                \message{|Text of legend higher than figure; using
  1418.                         \string\begfig. }%
  1419.                \begfigwid #1cm#3\endfig
  1420.             \else
  1421.                \def\figure##1##2{\vbox{\hsize=\dimen0\relax
  1422.                                        \@startins\noindent\petit{\bf
  1423.                                        Fig.\ts##1\unskip.\
  1424.                                        }\ignorespaces##2\par}}%
  1425.                \bothtopinsert\line{\vbox{\hsize=#2true cm\relax
  1426.                \@startins\rahmen{#1}}\hss#3\unskip}\figfuzz\endbothinsert
  1427.             \fi
  1428.          \fi
  1429.       \egroup
  1430.    \fi\ignorespaces}
  1431. %
  1432. \def\begfigpage#1cm#2\endfig{\specialpage{\@startins
  1433.    \vskip3.7pt\rahmen{#1}#2}\ignorespaces}%
  1434. \def\begtab#1cm#2\endtab{\single@column@insert{#2\rahmen{#1}}\ignorespaces}
  1435. \let\begtabempty=\begtab
  1436. \def\begtabfull#1\endtab{\single@column@insert{#1}\ignorespaces}
  1437. \def\begtabemptywid#1cm#2\endtab{\relax
  1438.    \if N\lr
  1439.       {\hsize=\fullhsize \begtabempty#1cm#2\endtab}%
  1440.    \else
  1441.       \bothtopinsert\line{\vbox{\hsize=\fullhsize
  1442.       #2\rahmen{#1}}\hss}\medskip\endbothinsert
  1443.    \fi\ignorespaces}
  1444. \def\begtabfullwid#1\endtab{\relax
  1445.    \if N\lr
  1446.       {\hsize=\fullhsize \begtabfull#1\endtab}%
  1447.    \else
  1448.       \bothtopinsert\line{\vbox{\hsize=\fullhsize
  1449.       \noindent#1}\hss}\medskip\endbothinsert
  1450.    \fi\ignorespaces}
  1451. \def\begtabpage#1\endtab{\specialpage{#1}\ignorespaces}
  1452. \catcode`\@=\active   % This is reset by the \maketitle macro
  1453.